home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / assembler / progasm1.lha / SORGENTI2 / LEZIONE4a.s < prev    next >
Text File  |  1994-10-30  |  3KB  |  70 lines

  1.  
  2. ; Lezione4a.s    ROUTINE UNIVERSALE DI PUNTAMENTO BITPLANES
  3.  
  4.     SECTION    CiriBiri,CODE
  5.  
  6. Inizio:
  7.     MOVE.L    #PIC,d0        ; in d0 mettiamo l'indirizzo della PIC,
  8.                 ; ossia dove inizia il primo bitplane
  9.  
  10.     LEA    BPLPOINTERS,A1    ; in a1 mettiamo l'indirizzo dei
  11.                 ; puntatori ai planes della COPPERLIST
  12.     MOVEQ    #2,D1        ; numero di bitplanes -1 (qua sono 3)
  13.                 ; per eseguire il ciclo col DBRA
  14. POINTBP:
  15.     move.w    d0,6(a1)    ; copia la word BASSA dell'indirizzo del plane
  16.                 ; nella word giusta nella copperlist
  17.     swap    d0        ; scambia le 2 word di d0 (es: 1234 > 3412)
  18.                 ; mettendo la word ALTA al posto di quella
  19.                 ; BASSA, permettendone la copia col move.w!!
  20.     move.w    d0,2(a1)    ; copia la word ALTA dell'indirizzo del plane
  21.                 ; nella word giusta nella copperlist
  22.     swap    d0        ; scambia le 2 word di d0 (es: 3412 > 1234)
  23.                 ; rimettendo a posto l'indirizzo.
  24.     ADD.L    #40*256,d0    ; Aggiungiamo 10240 ad D0, facendolo puntare
  25.                 ; al secondo bitplane (si trova dopo il primo)
  26.                 ; (cioe' aggiungiamo la lunghezza di un plane)
  27.                 ; Nei cicli seguenti al primo faremo puntare
  28.                 ; al terzo, al quarto bitplane eccetera.
  29.  
  30.     addq.w    #8,a1        ; a1 ora contiene l'indirizzo dei prossimi
  31.                 ; bplpointers nella copperlist da scrivere.
  32.     dbra    d1,POINTBP    ; Rifai D1 volte POINTBP (D1=num of bitplanes)
  33.  
  34.     rts    ; USCITA!!
  35.  
  36.  
  37.  
  38. COPPERLIST:
  39. ;    ....    ; qua metteremo i registri necessari...
  40.  
  41. ;    Facciamo puntare i bitplanes direttamente mettendo nella copperlist
  42. ;    i registri $dff0e0 e seguenti qua di seguito con gli indirizzi
  43. ;    dei bitplanes che saranno messi dalla routine POINTBP
  44.  
  45. BPLPOINTERS:
  46.     dc.w $e0,$0000,$e2,$0000    ;primo     bitplane - BPL0PT
  47.     dc.w $e4,$0000,$e6,$0000    ;secondo bitplane - BPL1PT
  48.     dc.w $e8,$0000,$ea,$0000    ;terzo     bitplane - BPL2PT
  49. ;    ....
  50.     dc.w    $FFFF,$FFFE    ; fine della copperlist
  51.  
  52. ;    Ricordatevi di selezionare la directory dove si trova la figura
  53. ;    in questo caso basta scrivere: "V df0:SORGENTI2"
  54.  
  55. PIC:
  56.     incbin    "amiga.320*256*3"    ; qua carichiamo la figura in RAW,
  57.                     ; convertita col KEFCON, fatta di
  58.                     ; 3 bitplanes consecutivi
  59.  
  60.     end
  61.  
  62. Provate a fare un "AD", ossia un DEBUG di questa routine. Debuggando fate
  63. particolare attenzione al valore di D0, visibile in alto a destra, nel momento
  64. dei 2 swap. Per verificare il funzionamento, al termine dell'esecuzione
  65. provate a controllare con un "M BPLPOINTERS" se le words sono state cambiate
  66. con l'indirizzo di PIC: SWAPPATO nelle words. (Con un "M PIC" si puo' vedere
  67. a che indirizzo e' stata caricata tramite INCBIN la PIC, che come previsto
  68. e' lunga 30720 bytes: 40*256*3).
  69.  
  70.